home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG: World of Games / PC-SIG World of Games (CDRM1080710) (1993).iso / 262 / AMAIN.UNO < prev    next >
Text File  |  1985-12-26  |  15KB  |  310 lines

  1. 490 '*************************************************************
  2. 492 '*****    PC-GOLF    THE GOLFER's PROGRAM     PC-GOLF    *****
  3. 494 '*****    Version 1.5  (C) 1983,1984,1985 Ed Chandler    *****
  4. 496 '*************************************************************
  5. 498 DEFINT A-Z:DEF FNNMODM(N,M)=N-(M*INT(N/M))
  6. 499 GOTO 6030 'GOTO 3030,PC-GOLF INITIALIZATION or GOTO 6030,MAIN
  7. 500 GOTO 3670 'special return from INIT.ASC(not for user version)
  8. 510 GOTO 8350 'on error go to subroutine
  9. 520 GOTO XXXX 'init PLAYER.DAT
  10. 530 GOTO 6350 'return from chained programs
  11. 540 GOTO 6430 'display course directory
  12. 550 GOTO 6890 'display player roster`
  13. 560 GOTO 1040 'prompter 1,M1$=prompt, return KB=(0-9), KB$=input char.
  14. 570 GOTO 1120 'prompter 2,M1$,M2$=prompt, return KB=(0-9), KB$=input char.
  15. 580 GOTO 1210 'prompter 3 with BEEP, prompt-Press space bar to continue.
  16. 590 GOTO 1220 'prompter 3 no beep
  17. 600 GOTO 1300 'prompter 4,M1$=prompt, return KB$= Y or N
  18. 610 GOTO 1400 'prompter 5 prompt-Input error. Try again. Press space bar ...
  19. 611 GOTO 1440 'prompter 6 on line 25-choose line #, press space bar
  20. 620 GOTO 1500 'open #1 INIT.DAT
  21. 630 GOTO 1560 'update #1 - PACT
  22. 640 GOTO 1610 'update #1 - CACT
  23. 641 GOTO 1660 'open #1 TEMP.DAT
  24. 650 GOTO 1710 'open #2 GCDIR.DAT
  25. 655 GOTO 1770 'OPEN #3 COURSE.DAT
  26. 656 GOTO 1810 'init A2B$ & A3B$
  27. 660 GOTO 1870 'open #4 PDIR.DAT
  28. 661 GOTO 1910 'init A4B$
  29. 670 GOTO 1950 'open #5 PLAYER.DAT
  30. 671 GOTO 2000 'init E5$-O5$
  31. 672 GOTO 2030 'init A5$-O5$
  32. 680 GOTO 7090 'convert integers in PS(i) to a string in P$
  33. 690 GOTO XXXX 'convert integers in PS(i) to a MKI$ string in P$
  34. 700 GOTO 7140 'remove excess blanks from KB$
  35. 710 GOTO 7250 'calculate par for the course
  36. 720 GOTO 7400 'get integers from keyboard [zero's?]
  37. 730 GOTO 7750 'change P$ to integers in PS(i)
  38. 740 GOTO 7820 'change a number on a line in PS(i) [zero's?]
  39. 750 GOTO 4570 'debug dump display players tally record
  40. 760 GOTO XXXX 'calculate adjusted score, USGA rules  [moved to TALLY]
  41. 770 GOTO XXXX 'PLOT subroutine [moved to PERFORM]
  42. 780 GOTO 4810 'debug INIT.DAT DUMP
  43. 790 GOTO 4920 'debug GCDIR.DAT, COURSE.DAT DUMP
  44. 800 GOTO 5140 'debug PDIR.DAT DUMP
  45. 810 GOTO 8110 'print messages subroutine(using restores)
  46. 811  '+++++     data tables for message subroutines
  47. 812  DATA 1,3,1,2,6
  48. 813  DATA 1,4,1,7,20,14
  49. 814  DATA 1,3,1,8,14
  50. 815  DATA 1,5,1,2,5,16,13
  51. 816  DATA 1,3,1,2,10
  52. 817  DATA 1,5,1,2,3,11,13
  53. 818  DATA 1,5,1,2,3,11,12
  54. 819  DATA 1,5,1,2,4,16,13
  55. 820  DATA 1,5,1,2,4,11,13
  56. 821  DATA 1,5,1,2,3,11,15
  57. 822  DATA 1,4,17,2,22,23
  58. 823  DATA 1,5,1,2,4,16,15
  59. 824  DATA 1,5,1,2,4,11,15
  60. 825  DATA 1,6,17,2,3,7,18,21
  61. 826  DATA 1,6,17,2,3,7,19,21
  62. 827  DATA 1,6,17,2,3,7,28,30
  63. 828  DATA 1,6,17,2,3,7,29,30
  64. 829  DATA 1,6,17,2,3,7,28,31
  65. 830  DATA 1,6,17,2,3,7,29,31
  66. 831  DATA 1,6,17,2,3,7,28,32
  67. 832  DATA 1,6,17,2,3,7,29,32
  68. 833  DATA 1,3,17,2,10
  69. 834  DATA 1,1,9
  70. 835  DATA 1,3,1,2,24
  71. 836  DATA 2,5,25,10,25,26,27
  72. 837  DATA 3,3,25,10,69
  73. 838  DATA 2,3,25,10,25
  74. 839  DATA 3,3,14,1,12
  75. 840  DATA 3,3,15,1,52
  76. 841  DATA 2,3,4,5,3
  77. 1040  KB$=INKEY$:IF KB$<>"" THEN 1040
  78. 1050  PRINT M1$;
  79. 1060  KB$=INKEY$:IF KB$="" THEN 1060
  80. 1070  KB=VAL(KB$):PRINT KB$:RETURN
  81. 1120  KB$=INKEY$:IF KB$<>"" THEN 1120
  82. 1130  COLOR 15,0,0:PRINT"You're away!"
  83. 1140  PRINT"PRESS the ";M1$;" of your choice. ";M2$;
  84. 1150  KB$=INKEY$:IF KB$="" THEN 1150
  85. 1160  KB=VAL(KB$):PRINT KB$:COLOR 7,0,0:RETURN
  86. 1210  BEEP
  87. 1220  KB$=INKEY$:IF KB$<>"" THEN 1220
  88. 1230  LOCATE CSRLIN,POS(0),0:PRINT:PRINT"PRESS the space bar to continue. ";
  89. 1240  KB$=INKEY$:IF KB$<>" " THEN 1240
  90. 1250  LOCATE CSRLIN,POS(0),1:RETURN
  91. 1300  KB$=INKEY$:IF KB$<>"" THEN 1300
  92. 1310  PRINT:GOSUB 810:PRINT"  (y or n)?  ";
  93. 1320  KB$=INKEY$:IF KB$="" THEN 1320
  94. 1330  IF KB$="N" OR KB$="n" THEN KB$="N":GOTO 1360
  95. 1340  IF KB$<>"Y" AND KB$<>"y" THEN 1320
  96. 1350  KB$="Y"
  97. 1360  PRINT KB$:RETURN
  98. 1400  PRINT:PRINT"Input error. Try again.":GOSUB 580:RETURN
  99. 1440  BEEP:LOCATE 25,1:PRINT"Please choose a line number from the list.";
  100. 1450  PRINT SPC(2)"PRESS the space bar to continue.";
  101. 1460  KB$=INKEY$:IF KB$<>" " THEN 1460 ELSE RETURN
  102. 1500  OPEN DEV$+DAT1$+DAT$ AS #1 LEN=16
  103. 1510  FIELD #1,2 AS NMAX$,2 AS CMAX$,2 AS CACT$,2 AS PMAX$,2 AS PACT$,1 AS A1$,1 AS B1$,1 AS C1$,1 AS D1$
  104. 1520  FIELD #1,16 AS A1B$:RETURN
  105. 1560  GOSUB 620:GET #1,1:PACT=PACT+X 'update active player count
  106. 1570  RSET PACT$=MKI$(PACT):PUT #1,1:CLOSE #1:RETURN
  107. 1610  GOSUB 620:GET #1,1:CACT=CACT+X 'update active courses
  108. 1620  RSET CACT$=MKI$(CACT):PUT #1,1:CLOSE #1:RETURN
  109. 1660  OPEN DEV$+DAT4$+DAT$ AS #1 LEN=NMAX
  110. 1670  FIELD #1,NMAX AS TA1$:RETURN
  111. 1710  OPEN DEV$+DAT2$+DAT$ AS #2 LEN=L2
  112. 1720  FIELD #2,2 AS A2$,NMAX AS B2$,8 AS C2$,NMAX AS D2$
  113. 1730  FIELD #2,L2 AS A2B$:RETURN
  114. 1770  OPEN DEV$+CM4$+DAT$ AS #3 LEN=L3
  115. 1780  FIELD #3,2 AS A3$,18 AS E2$,4 AS F2$,36 AS G2$,18 AS H2$,4 AS I2$,36 AS J2$,4 AS K2$,4 AS L2$
  116. 1790  FIELD #3,L3 AS A3B$:RETURN
  117. 1810  RSET A2B$=STRING$(L2,"*"):RSET A2$=MKI$(0)
  118. 1820  RSET A3B$=STRING$(L3,"*"):RSET A3$=A2$:RSET F2$=MKS$(0):RSET I2$=F2$
  119. 1830  RSET K2$=F2$:RSET L2$=F2$:RETURN
  120. 1870  OPEN DEV$+DAT3$+DAT$ AS #4 LEN=L4
  121. 1880  FIELD #4,2 AS A4$,NMAX AS B4$,8 AS C4$,3 AS D4$,2 AS E4$,1 AS F4$,1 AS G4$,2 AS H4$
  122. 1890  FIELD #4,L4 AS A4B$:RETURN
  123. 1910  LSET A4B$=STRING$(L4,"*"):RSET A4$=MKI$(0):RETURN
  124. 1950  OPEN DEV$+CM3$+DAT$ AS #5 LEN=L5
  125. 1960  FIELD #5,1 AS A5$,2 AS B5$,3 AS C5$,40 AS D5$,2 AS E5$,40 AS F5$,36 AS G5$, 18 AS H5$,2 AS I5$,2 AS J5$,40 AS K5$,36 AS L5$,18 AS M5$,2 AS N5$,2 AS O5$,8 AS P5$
  126. 1970  FIELD #5,L5-1 AS PLAYER$
  127. 1980  FIELD #5,46 AS A5D$,L5-47 AS E5P$:RETURN
  128. 2000  LSET E5P$=STRING$(L5-47,MKI$(0)):LSET H5$=STRING$(18,"9"):LSET M5$=H5$
  129. 2010  RSET I5$=MKI$(999):RSET N5$=I5$:RSET P5$=STRING$(8,"*"):RETURN
  130. 2030  LSET PLAYER$=STRING$(L5-1,MKI$(0)):RSET P5$=STRING$(8,"*")
  131. 2040  LSET H5$=STRING$(18,"9"):LSET M5$=H5$
  132. 2050  RSET I5$=MKI$(999):RSET N5$=I5$
  133. 2060  RSET A5$="I":LSET B5$="00":LSET C5$="99*"
  134. 2070  P$="":FOR I=1 TO 20:P$=P$+MKI$(-99):NEXT I:RSET D5$=P$:RETURN
  135. 6030 CLOSE:GOTO 6070 'CALL MENU
  136. 6070 CLS:PRINT"PC-GOLF     THE GOLFER's PROGRAM     PC-GOLF":PRINT
  137. 6072 IF ROS=0 THEN 6100
  138. 6080 DEF SEG=&H40:I%=PEEK(&H17):I%=I% AND NOT 64:POKE &H17,I% 'caps lock off
  139. 6090 DEF SEG=&H40:I%=PEEK(&H17):I%=I%      OR 32:POKE &H17,I% 'num  lock on
  140. 6100 PRINT"Version 1.5  (C) Copyright 1984  Ed Chandler"
  141. 6102 PRINT SPC(11)"User Supported Software":PRINT
  142. 6110 PRINT"   Make your choice from the menu.":PRINT
  143. 6120 MNU1$="1. Introduction.":PRINT MNU1$
  144. 6130 MNU2$="2. Tally the scores for a round.":PRINT MNU2$
  145. 6140 MNU5$="3. Get the golfer's score sheet.":PRINT MNU5$
  146. 6150 MNU4$="4. Get the golf course list.":PRINT MNU4$
  147. 6160 MNU3$="5. Get the golfers roster.":PRINT MNU3$
  148. 6170 MNU6$="6. Quit.  Going to the 19th hole.":PRINT MNU6$
  149. 6180 PRINT:LOCATE CSRLIN,POS(0),1
  150. 6190 M1$="number":M2$="(1,2,3,4,5 or 6). ":GOSUB 570
  151. 6200 IF KB<1 OR KB>6 THEN GOSUB 610:GOTO 6070
  152. 6220 COLOR 0,15,0:LOCATE 7,1,0
  153. 6230 IF KB=1 THEN LOCATE CSRLIN+KB,POS(0):PRINT MNU1$:GOTO 6290
  154. 6240 IF KB=2 THEN LOCATE CSRLIN+KB,POS(0):PRINT MNU2$:GOTO 6290
  155. 6250 IF KB=3 THEN LOCATE CSRLIN+KB,POS(0):PRINT MNU5$:GOTO 6290
  156. 6260 IF KB=4 THEN LOCATE CSRLIN+KB,POS(0):PRINT MNU4$:GOTO 6290
  157. 6270 IF KB=5 THEN LOCATE CSRLIN+KB,POS(0):PRINT MNU3$:GOTO 6290
  158. 6280 IF KB=6 THEN LOCATE CSRLIN+KB,POS(0):PRINT MNU6$:GOTO 6290
  159. 6290 COLOR 7,0,0:RESTORE 839:GOSUB 810:RESTORE 840:GOSUB 810
  160. 6300 LOCATE 15,1,0:RESTORE 814:BEEP:GOSUB 600:IF KB$<>"Y" THEN 6070
  161. 6340 ON KB GOTO 8210,8230,8290,8270,8250,8310 'chain next program
  162. 6350 GOTO 6030 'BACK TO MAIN
  163. 6430 CD=1:IF CACT>0 THEN 6450 'not empty
  164. 6440 PRINT:PRINT "The course directory is empty.":CD=0:GOTO 6810
  165. 6450 GOSUB 650:GOSUB 655:PRINT:PRINT"PC-GOLF's Course Directory"
  166. 6460 PRINT:PRINT "Line #    Course Information":PRINT
  167. 6470 T=0:FOR I=1 TO CMAX:TMP(I)=0:NEXT I
  168. 6480 FOR I=1 TO CMAX:GET #2,I:GET #3,I:N=CVI(A2$):IF N=0 THEN 6530
  169. 6490 TMP(I)=N:X$="":L=INSTR(1,B2$,"  ")-1:IF L<0 THEN L=NMAX
  170. 6500 X$=X$+LEFT$(B2$,L):L=INSTR(1,D2$,"  ")-1:IF L<0 THEN L=NMAX
  171. 6510 X$=X$+", "+C2$+", "+LEFT$(D2$,L):PRINT N;SPC(4);X$
  172. 6520 T=T+1:IF T=CACT THEN 6540 'tra no more courses
  173. 6530 NEXT
  174. 6540 CLOSE #2,#3:IF M1<>1 THEN 6810 'test opt. print
  175. 6550 RESTORE 822:GOSUB 600:IF KB$<>"Y" THEN 6810
  176. 6560 PRINT:M1$="PRESS the line number of the course you want. "
  177. 6570 GOSUB 560:IF KB>0 AND KB<=CMAX AND TMP(KB)=KB THEN RN=KB:GOTO 6600
  178. 6580 PRINT:PRINT"You must choose a number from the list."
  179. 6590 GOSUB 580:CLS:PRINT MNU1$:GOTO 540
  180. 6600 RN=KB:GOSUB 650:GOSUB 655:GET #2,RN:GET #3,RN:CLOSE #2,#3 'get course
  181. 6610 CLS:KB$=B2$:GOSUB 700:LOCATE 3,1
  182. 6620 PRINT SPC(36-L/2):COLOR 0,15,0:PRINT " "+KB$+" ":COLOR 7,0,0:PRINT
  183. 6630 PRINT"HOLE #"SPC(1):FOR I=1 TO 18:IF I=10 THEN PRINT SPC(6)
  184. 6640 PRINT USING"###";I;:NEXT:PRINT:PRINT"PAR":P$=E2$:GOSUB 710
  185. 6650 PRINT"Men"SPC(4):FOR I=1 TO 18:IF I=10 THEN PRINT SPC(1)F9;SPC(1)
  186. 6660 PRINT USING "###";CP(I);:NEXT:PRINT SPC(1)B9;SPC(1)PAR:P$=H2$:GOSUB 710
  187. 6670 PRINT"Ladies"SPC(1):FOR I=1 TO 18:IF I=10 THEN PRINT SPC(1)F9;SPC(1)
  188. 6680 PRINT USING "###";CP(I);:NEXT:PRINT SPC(1)B9;SPC(1)PAR:LOCATE CSRLIN+3,1
  189. 6690 PRINT"HOLE #"SPC(1):FOR I=1 TO 18:IF I=10 THEN PRINT SPC(6)
  190. 6700 PRINT USING"###";I;:NEXT:PRINT:PRINT"H'CAP"
  191. 6710 PRINT"Men"SPC(4):FOR I=1 TO 36 STEP 2:IF I=19 THEN PRINT SPC(6)
  192. 6720 PRINT USING "###";VAL(MID$(G2$,I,2));:NEXT:PRINT
  193. 6730 PRINT"Ladies"SPC(1):FOR I=1 TO 36 STEP 2:IF I=19 THEN PRINT SPC(6)
  194. 6740 PRINT USING "###";VAL(MID$(J2$,I,2));:NEXT:PRINT
  195. 6750 LOCATE CSRLIN+2,1:PRINT"COURSE RATING"
  196. 6760 IF CVS(K2$)<>0 THEN PRINT USING"GOLD     ##.#";CVS(K2$)
  197. 6770 IF CVS(L2$)<>0 THEN PRINT USING"BLUE     ##.#";CVS(L2$)
  198. 6780 IF CVS(F2$)<>0 THEN PRINT USING"WHITE    ##.#";CVS(F2$)
  199. 6790 IF CVS(I2$)<>0 THEN PRINT USING"RED      ##.#";CVS(I2$)
  200. 6800 GOSUB 590
  201. 6810 RETURN
  202. 6890 PR=1:IF PACT>0 THEN 6910 'TRA IF ROSTER NOT EMPTY
  203. 6900 PRINT:PRINT "The Player Roster is empty.":PR=0:RETURN
  204. 6910 GOSUB 660:PRINT:IF X=0 THEN 6940
  205. 6920 PRINT SPC(8)"PC-GOLF's Player Roster":PRINT"LINE #  Player's Name";
  206. 6930 PRINT SPC(7);"   Phone";SPC(4);"H'cap";SPC(2);"Home Course/tee"
  207. 6940 T=0:FOR I=1 TO PMAX:TMP(I)=0:NEXT I
  208. 6950 FOR I=1 TO PMAX:GET #4,I:N=CVI(A4$):IF N=0 THEN 7000
  209. 6960 TMP(I)=N:PRINT USING "###";N;:PRINT SPC(5);B4$; 'ID AND NAME
  210. 6970 N=VAL(E4$):KB$=MID$(GCDIR$(N),2,NMAX):GOSUB 700:N$=KB$+"/"+G4$
  211. 6980 T$=D4$:X=VAL(LEFT$(D4$,2)):P$=RIGHT$(D4$,2):IF X<0 THEN T$="+"+P$
  212. 6990 PRINT C4$;SPC(3);T$;SPC(2);N$:T=T+1:IF T=PACT THEN 7010 'no more recs
  213. 7000 NEXT
  214. 7010 CLOSE #4:RETURN
  215. 7090 P$="":FOR I=1 TO M:P$=P$+RIGHT$(STR$(PS(I)),N)+N$:NEXT
  216. 7100 L=LEN(P$):RETURN
  217. 7140 T$="":Q=1:L=LEN(KB$)
  218. 7150 IF MID$(KB$,L,1)=" " THEN KB$=LEFT$(KB$,L-1):L=L-1:GOTO 7150
  219. 7160 IF MID$(KB$,1,1)=" " THEN KB$=MID$(KB$,2,L-1):L=LEN(KB$):GOTO 7160
  220. 7180 S=INSTR(Q,KB$,SPACE$(2)):IF S=0 THEN 7200
  221. 7190 T$=MID$(KB$,1,S-1)+MID$(KB$,S+1,L-S):KB$=T$:Q=S:L=LEN(KB$):GOTO 7180
  222. 7200 RETURN
  223. 7250 F9=0:B9=0:FOR I=1 TO 9:P=VAL(MID$(P$,I,1)):CP(I)=P:F9=F9+P
  224. 7260 P=VAL(MID$(P$,I+9,1)):CP(I+9)=P:B9=B9+P:NEXT:PAR=F9+B9:RETURN
  225. 7400 DGT$="":SUM=0:Z=0:LOCATE CSRLIN,POS(0),1
  226. 7410 KB$=INKEY$:IF KB$<>"" THEN 7410
  227. 7420 FOR I=1+L TO M+L
  228. 7430 PRINT SPC(7);I;SPC(5);:X=POS(0):LIN=CSRLIN
  229. 7440 KB$=INKEY$:IF KB$="" THEN 7440
  230. 7450 Y=ASC(KB$):IF Y<>8 THEN 7490
  231. 7460 T=POS(0):IF T>X THEN T=T-1:LOCATE CSRLIN,T
  232. 7470 Z=0:Y=LEN(DGT$):IF Y>0 THEN DGT$=LEFT$(DGT$,Y-1):Z=Y-1
  233. 7480 PRINT SPC(1):LOCATE CSRLIN,T:GOTO 7440
  234. 7490 IF Y>47 AND Y<58 THEN 7510
  235. 7500 IF Y=13 AND Z>0 THEN 7670 ELSE 7440
  236. 7510 Z=Z+1:IF Z>N THEN 7670
  237. 7520 PRINT KB$;:KB=VAL(KB$):IF S=0 THEN 7660 'no check
  238. 7530 IF S=1 THEN M2$=MSG$(42):M1=3:M2=5
  239. 7540 IF S=2 THEN M2$=MSG$(43):M1=1:M2=18
  240. 7550 IF S=3 THEN M2$=MSG$(44):M1=1:M2=9
  241. 7560 IF S=4 THEN M2$=MSG$(45):M1=1:M2=4
  242. 7570 IF S=2 THEN 7600 'hcap
  243. 7580 IF KB>=M1 AND KB<=M2 THEN 7660
  244. 7590 PRINT:PRINT M2$;MSG$(33);M1;MSG$(34);M2;MSG$(35):GOTO 7640
  245. 7600 IF Z=1 THEN T=KB:IF KB<>0 THEN 7660 ELSE 7630
  246. 7610 IF Z=2 AND T=1 AND KB<>9 THEN 7660
  247. 7620 DGT$=""
  248. 7630 PRINT:PRINT M1$;MSG$(33);M1;MSG$(34);M2;MSG$(35)
  249. 7640 GOSUB 590:LOCATE LIN,X:FOR J=1 TO 5:PRINT SPC(55):NEXT J
  250. 7650 LOCATE LIN,1:Z=0:GOTO 7430
  251. 7660 DGT$=DGT$+KB$:GOTO 7440
  252. 7670 PS(I)=VAL(DGT$):SUM=SUM+PS(I):Z=0:DGT$="":PRINT
  253. 7680 IF I=3+L OR I=6+L THEN PRINT
  254. 7690 NEXT:RETURN
  255. 7750 S=1:FOR I=1 TO M:PS(I)=VAL(MID$(P$,S,N)):S=S+N:NEXT I:RETURN
  256. 7820 CLS:PRINT T$:PRINT:PRINT SPC(4);"Line #  Hole #  ";M1$:X=0
  257. 7830 FOR I=1+L TO M+L:PRINT USING "#######";I-L,I,PS(I):X=X+PS(I)
  258. 7840 IF I=3+L OR I=6+L THEN PRINT
  259. 7850 NEXT I:IF S=1 OR S=3 OR S=4 THEN PRINT:PRINT SPC(11);M1$;" is ";X
  260. 7860 KB$=INKEY$:IF KB$<>"" THEN 7860
  261. 7870 PRINT:LNBR=CSRLIN:CNBR=POS(0)
  262. 7880 PRINT"PRESS the number of the line you want to change. ";
  263. 7890 KB$=INKEY$:IF KB$="" THEN 7890
  264. 7900 PRINT KB$:I=VAL(KB$):P=INSTR(1,N9$,KB$):IF P<>0 THEN 7950
  265. 7910 PRINT:PRINT"Your line number is incorrect.  Try again.":GOSUB 590
  266. 7920 LOCATE LNBR,1:FOR I=1 TO 7:PRINT SPACE$(78);:NEXT
  267. 7930 LOCATE LNBR,CNBR:GOTO 7880
  268. 7940 KB$=INKEY$:IF KB$<>"" THEN 7940
  269. 7950 PRINT:LINE INPUT"ENTER the replacement number. ";KB$:T=VAL(LEFT$(KB$,2))
  270. 7960 IF S=0 THEN 8040 'no check
  271. 7970 IF S=1 THEN M2$=MSG$(42):M1=3:M2=5
  272. 7980 IF S=2 THEN M2$=MSG$(43):M1=1:M2=18
  273. 7990 IF S=3 THEN M2$=MSG$(44):M1=1:M2=9
  274. 8000 IF S=4 THEN M2$=MSG$(45):M1=1:M2=4
  275. 8010 IF T>=M1 AND T<=M2 THEN 8040
  276. 8020 PRINT:PRINT M2$;MSG$(33);M1;MSG$(34);M2;MSG$(35)
  277. 8030 GOSUB 590:GOTO 7920
  278. 8040 PS(I+L)=T:CLS:PRINT T$:PRINT:PRINT SPC(4);"Line #  Hole #  ";M1$
  279. 8050 X=0:FOR I=1+L TO M+L:PRINT USING "#######";I-L,I,PS(I)
  280. 8060 X=X+PS(I):IF I=3+L OR I=6+L THEN PRINT
  281. 8070 NEXT I
  282. 8080 IF S=1 OR S=3 OR S=4 THEN PRINT:PRINT SPC(11);M1$;" is ";X
  283. 8090 RETURN
  284. 8110 READ TYP:ON TYP GOSUB 8130,8150,8180:RETURN
  285. 8130 READ NBRI:FOR I=1 TO NBRI:READ MSG:PRINT MSG$(MSG);:NEXT:RETURN
  286. 8150 READ NBRI:READ H1:READ H2:LOCATE H1,H2
  287. 8160 FOR I=1 TO NBRI-2:READ MSG:PRINT MSG$(MSG);:NEXT:RETURN
  288. 8180 READ NBRI:READ H1:READ H2:LOCATE H1,H2
  289. 8190 READ H1:PRINT SPACE$(H1):RETURN
  290. 8210 IF CM$=CM1$ THEN  8330 ELSE RESTORE 836:GOSUB 810
  291. 8220    CM$=CM1$:CHAIN MERGE DEV$+"intro.asc"    ,10000,ALL,DELETE 10000-15000
  292. 8230 IF CM$=CM2$ THEN  8330 ELSE RESTORE 836:GOSUB 810
  293. 8240    CM$=CM2$:CHAIN MERGE DEV$+"tally.asc"    ,10000,ALL,DELETE 10000-15000
  294. 8250 IF CM$=CM3$ THEN  8330 ELSE RESTORE 836:GOSUB 810
  295. 8260    CM$=CM3$:CHAIN MERGE DEV$+"player.asc"   ,10000,ALL,DELETE 10000-15000
  296. 8270 IF CM$=CM4$ THEN  8330 ELSE RESTORE 836:GOSUB 810
  297. 8280    CM$=CM4$:CHAIN MERGE DEV$+"course.asc"   ,10000,ALL,DELETE 10000-15000
  298. 8290 IF CM$=CM5$ THEN  8330 ELSE RESTORE 836:GOSUB 810
  299. 8300    CM$=CM5$:CHAIN MERGE DEV$+"perform.asc"  ,10000,ALL,DELETE 10000-15000
  300. 8310 IF CM$=CM6$ THEN  8330 ELSE RESTORE 838:GOSUB 810
  301. 8320    CM$=CM6$:CHAIN MERGE DEV$+"quit.asc"     ,10000,ALL,DELETE 10000-15000
  302. 8330 GOTO 10000 'chain entry
  303. 8340 ' *** error traps
  304. 8350 IF ERR=25 OR ERR=27 THEN RESUME NEXT
  305. 8360 ON ERROR GOTO 0 ' up to basic
  306. 9999 'last statement
  307. 10000 '*************************************************************
  308. 15000 'for chain delete
  309. to basic
  310. 9999 'last statemen